package com.clothing.customization.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 订单管理服务接口
 */
public interface OrderManagementService {
    
    /**
     * 获取订单列表
     * @param status 状态
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param keyword 关键词
     * @param page 页码
     * @param size 每页数量
     * @return 订单列表
     */
    Map<String, Object> getOrderList(Integer status, Date startDate, Date endDate, String keyword, int page, int size);
    
    /**
     * 获取订单详情
     * @param id 订单ID
     * @return 订单详情
     */
    Map<String, Object> getOrderDetail(Long id);
    
    /**
     * 更新订单状态
     * @param id 订单ID
     * @param status 状态
     * @param remark 备注
     * @return 是否成功
     */
    boolean updateOrderStatus(Long id, Integer status, String remark);
    
    /**
     * 获取订单流程记录
     * @param orderId 订单ID
     * @return 流程记录列表
     */
    List<Map<String, Object>> getOrderProcessLogs(Long orderId);
    
    /**
     * 添加订单流程记录
     * @param orderId 订单ID
     * @param processType 流程类型
     * @param content 内容
     * @param operatorId 操作人ID
     * @return 是否成功
     */
    boolean addOrderProcessLog(Long orderId, String processType, String content, Long operatorId);
    
    /**
     * 获取订单数据分析
     * @param analysisType 分析类型: daily, weekly, monthly, category, region
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 分析数据
     */
    Map<String, Object> getOrderAnalysisData(String analysisType, Date startDate, Date endDate);
    
    /**
     * 获取未处理纠纷列表
     * @param page 页码
     * @param size 每页数量
     * @return 纠纷列表
     */
    Map<String, Object> getPendingDisputeList(int page, int size);
    
    /**
     * 获取所有纠纷列表
     * @param status 状态: pending, processing, resolved, rejected
     * @param page 页码
     * @param size 每页数量
     * @return 纠纷列表
     */
    Map<String, Object> getAllDisputeList(String status, int page, int size);
    
    /**
     * 获取纠纷详情
     * @param id 纠纷ID
     * @return 纠纷详情
     */
    Map<String, Object> getDisputeDetail(Long id);
    
    /**
     * 处理纠纷
     * @param id 纠纷ID
     * @param status 状态: processing, resolved, rejected
     * @param resolution 解决方案
     * @param operatorId 操作人ID
     * @return 是否成功
     */
    boolean processDispute(Long id, String status, String resolution, Long operatorId);
    
    /**
     * 获取订单统计数据
     * @return 统计数据
     */
    Map<String, Object> getOrderStatistics();
    
    /**
     * 删除订单
     * @param id 订单ID
     * @return 是否成功
     */
    boolean deleteOrder(Long id);
} 